This series of scenes follows on from the earlier "Experiments with Tunnels"
and comprise a set of fully worked out scenes based on those experiments.

The common theme is, of course, tunnels the appearance of which are produced
by distorting a source image by a tunnel shader, in particular my "Tunnel A"
fragment shader. This fragment shader is quite versatile with a large number
of control parameters that can be set in the scene file. Refer to the shader
source and to the "Experiments with Tunnels" for more details.  In  this set 
scenes it is simply used as a tool.

The first few scenes just use the shader to produce tunnels using  a  simple
image as the source for the tunnel walls. In some cases the scenes have been
enhanced by the addition of a flock of butterflies.

The remainder of the scenes do not use simple static images as  sources  for
the tunnel walls but instead generate them using a second shader. Pipelining
shaders like this is generaly useful technique and can be used for all sorts
of purposes.  In  the case of this series of scenes it is mainly used to let
the tunnel walls themselves have constantly changing patterns on them though
in a few cases it is used to generate complex static images.

The following sections describe the scenes in a little more detail.

=============================================================================

The A01xx scenes are simplest. They all use the Tunnel A shader operating on
a simple static image, currently a private garden and a municipal garden, to
generate simple rectangular tunnels. The scenes all use the shader's xyScale
control parameter in such a way as to stretch the x axis so that the corners
of the tunnel correspond to changes from horizontal features in  the  source
image, e.g. a lawn, to vertical ones such as the garden fences.  Of  note is
that the final image looks very different to the source image,  though it is
obviously related. In both cases two scenes are provided, with and without a
swarm of butterflies.  These show how extra dynamic elements may be included
in a scene of this nature.

The A00xx scenes are similar to the A1xx scnes but instead of each  using  a
hard coded image for the tunnel walls they use a randomly selected texture.

As an added extra "special" versions of these scenes use  a  negative  value
for one of the components of the xyScale2 parameter.  This both distorts the
vertical scale and causes the top and bottom halves to be mirror  images  of
each other.  The effect on the Vesey Gardens scene in particular is to cause
the final image to resemble an internal arcade rather than an avenue.

=============================================================================

The A02xx scenes all use the same basic structure, that being to generate an
image (in these cases always dynamic) with one shader and using  that  image
as the source for the walls generated the Tunnel A shader.  This  pipelining 
of shaders is a generaly useful technique that can be  used  elsewhere  with 
other pairs, or longer chains, of shaders.

There is not a great deal to say about any these scenes,  though a few minor
observations follow.

Firstly, in the scene using the Seascape shader the  sky  produced  by  that
shader appears at the bottom of the scene where provides a convenient  floor
for the performer. The xyScale control parameter has been used to widen this
area for aesthetic reasons. The sea then appears as the top and sides of the
tunnel.  This inversion is normal because of the different ways in which the
GLSL and VGHD screen coordinates re defined,  in  this case it is convenient
but in other cases it has to be allowed for.

The scenes using the Firewall shader produce a tunnel of flames, in one case
the twist control parameter is used to turn the tunnel into a vortex.

The scenes using the Simplicity-2 and Simplicity-2 galaxy shaders  both  use
slightly modified versions of the original Simplicity and  Simplicity Galaxy
shaders.  This  is because when the original shaders were not designed to be
used to tile an area and this lead to very visible  discontinuities  in  the
final image. To avoid these rather ugly defects the shaders were modified in
such a way that the colours of the top and bottom edges matched  each  other 
as did the two sides. There are still detectable discontinuities due to  the
sudden change in angles of lines that meet at these edges, but they are much
less noticible, and much less distracting, than those arising when using the
original shaders. The way in which the shaders were modified has resulted in
their output being symetric, but that is not a problem for these scenes.

The motions of clouds and stars in these scenes are driven by the  simulated
mouse in the Simplicity-2 and Simplicity-2 Galaxy  shaders.  This  could  be
changed to slow down the movement and change its pattern.

In these particular shaders I have chosen not to disguise the far end of the
tunnel. This s purely a matter of taste, I rather like the hint of something
artificial acting on a cosmic scale that arises from the sereies of  regular
circular dark bands that can be seen in the tunnel.  It could,  however,  be
hidden by the normal fading mechanism provided by the Tunnel A shader or  by
introducing some other element into the scene to cover it.

The twinkling stars provided by the Twinkling Stars shader do not comprise a
realistic rendering of a star field,  the effect is more like a set of stars
sewn onto black velvet, but it does make quite a nice tunnel wall.

There are quite a number of variations on the theme of  using  the  Tileable
Water Caustic shader. There is nothing particularly special about this, they
just use minor variations in the control parameters for Tunnel A in order to
produce a range of final effects. It may, however, be noted that because the
image produced by the Tileable Water Caustic is designed  to  be  seamlessly
tilable there is no need to use the Tunnel A shader's ability to flip  tiles
to reduce the visibilty of the jouns between them, indeed, in this case this
would only serve to make the joins visible.

=============================================================================

The A10xx scenes are just like the A02xx scenes except that they all use the
same shader, namely my Complex Functions shader,  to generate the input used
by the Tunnel A shader.  As  was the case with the earlier "Experiments with
Complex Functions" these scenes all use the Complex Functions shader in  the
mode in which it cycles through its complete set of functions  changing  its
active function every few seconds. As the full cycle is rather long a set of
scenes having alternative start points is provided for each distinct use  of
the shader. 

The "Plain" series of scenes use the default colouring scheme of the Complex
Functions shader to provide a series of brightly coloured and dynamic tunnel
walls.

The two "Wood" series use the texture based colouring scheme, using a simple
wood grain texture. The result resembles a intricate wood paneling or boxes.
The look of the static wood tunnels suggest that the images produced by  the
Complex Functions shader might be useful as floors or walls of a  room  used
as the setting of some scene.  If  so the best way to proceed is probably to
use the Complex Functions shader by itself to generate full screen  versions
of the individual floor or walls,  use the screen capture capability of VGHD
and then use these images as elements in a 3D scene. This would be nuch more
efficient than regenerating whenever they are used.

The two "Weave" series also use the texture based colouring scheme, but this
time using a rough weave texture.  The  result looks like rather like wicker
work.

=============================================================================

The A7xxx scenes use compound tunnel walls, i.e, walls that are a mixture of
two sets of walls.  This  is done by overlaying two tunnels that differ only
in their walls and allowing one set to be seen through the second.  This  is
acheived by rendering the tunnels into separate off screen frame buffers and
using thse as he source images for sprites.  This allows a number of effects
to be achieved my using animate clauses for the sprites' properties. 

=============================================================================